home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / deepvesa / vesa.asm < prev    next >
Assembly Source File  |  1996-03-31  |  12KB  |  378 lines

  1. ────────────────────────────────────────────────────────────────────────────────
  2. ;  vesa routines to adress the whole screen for fish ... by plasmoid deep/thc
  3. ────────────────────────────────────────────────────────────────────────────────
  4. .386
  5. .model tiny
  6. code            segment use16
  7.         assume  cs:code,ds:code,es:code
  8.         org     100h
  9.         locals
  10. ────────────────────────────────────────────────────────────────────────────────
  11. vesa:        jmp    main
  12. ────────────────────────────────────────────────────────────────────────────────
  13. setpalette     proc    near
  14.         mov     si,offset vgapalette
  15.         mov     dx,03c8h                ; ∙ port PEL write mode
  16.         mov     al,00h                  ;   at register 00h
  17.         out     dx,al
  18.         inc     dx                      ; ∙ port PEL data register
  19.         mov     cx,0100h*3
  20.         rep     outsb
  21.         ret                             ; ∙ vga color a 100h times
  22. setpalette    endp
  23. ────────────────────────────────────────────────────────────────────────────────
  24. detectvesa    proc    near
  25.         mov    ah,4fh            ; (vesa functions)
  26.         mov    al,00h            ; ∙ detect vesa card
  27.         push    cs            ; ES:DI card puffer
  28.         pop    es
  29.         mov    di,offset cardpuffer
  30.         int    10h            ; ∙ for structure look in the
  31.                         ;   file: cardpuf.txt
  32.                         ; ∙ if okay AX = 004fh
  33.         cmp    ah,00
  34.         je    vesafound
  35.         mov    ah,4ch
  36.         int    21h
  37. vesafound:    ret
  38. cardpuffer    db    256 dup (0)
  39. detectvesa    endp
  40. ────────────────────────────────────────────────────────────────────────────────
  41. initvesa    proc    near
  42.                         ; mode 5fh
  43.                         ; ---------
  44.                         ; 640x480x256 - 256k mem
  45.         mov    ah,4fh            ; (vesa functions)
  46.         mov    al,02h            ; ∙ set mode
  47.         mov    bx,5fh            ; BX mode number bit 14-0
  48.                         ;    bit 15: 0 clear screen
  49.                         ;            1 keep screen
  50.         int    10h
  51.                         ; ∙ if okay AX = 004fh
  52.  
  53.         mov    ah,4fh            ; (vesa functions)
  54.         mov    al,01h            ; ∙ info on mode
  55.         mov    cx,5fh            ; CX mode number
  56.         push    cs            ; ES:DI info puffer
  57.         pop    es
  58.         mov    di,offset infopuffer
  59.         int    10h            ; ∙ for structure look in the
  60.                         ;   file: infopuf.nfo
  61.                         ; ∙ if okay AX = 004fh
  62.  
  63.         ret
  64. infopuffer    db    256 dup (0)
  65. initvesa    endp
  66. ────────────────────────────────────────────────────────────────────────────────
  67. switchWin    proc    near
  68.         mov    ah,4fh            ; (vesa functions)
  69.         mov    al,05h            ; ∙ set win or read win
  70.         mov    bh,0            ; BH 0 set
  71.                         ;    1 read
  72.         mov    bl,0            ; BL 0 win A
  73.                         ;    1 win B
  74.         mov    dx,bp            ; DX position of win
  75.                         ;    of wingranulaty
  76.                         ;    (view infopuf.txt)
  77.                         ; (wingranulaty is here
  78.                         ;  4. DX=15 means 100
  79.                         ;  lines
  80.         int    10h
  81.                         ; ∙ if okay AX = 004fh
  82. switchWin    endp
  83. ────────────────────────────────────────────────────────────────────────────────
  84. drawlines    proc    near
  85.         push    0a000h
  86.         pop    es
  87.         xor    di,di
  88.         mov    dx,50
  89. loopy:        mov    eax,pattern
  90.         mov    cx,640/2
  91.         rep    stosd
  92.         add    pattern,01010101h
  93.         dec    dx
  94.         jnz    loopy
  95.         ret
  96. pattern        dd    0
  97. drawlines    endp
  98. ────────────────────────────────────────────────────────────────────────────────
  99. vgapalette  label byte
  100.             db 000h, 000h, 000h
  101.             db 000h, 000h, 001h
  102.             db 000h, 000h, 002h
  103.             db 000h, 000h, 003h
  104.             db 000h, 000h, 004h
  105.             db 000h, 000h, 005h
  106.             db 000h, 000h, 006h
  107.             db 000h, 000h, 007h
  108.             db 000h, 000h, 008h
  109.             db 000h, 000h, 009h
  110.             db 000h, 000h, 00Ah
  111.             db 000h, 000h, 00Bh
  112.             db 000h, 000h, 00Ch
  113.             db 000h, 000h, 00Dh
  114.             db 000h, 000h, 00Eh
  115.             db 000h, 000h, 00Fh
  116.             db 000h, 000h, 010h
  117.             db 000h, 000h, 011h
  118.             db 000h, 000h, 012h
  119.             db 000h, 000h, 013h
  120.             db 000h, 000h, 014h
  121.             db 000h, 000h, 015h
  122.             db 000h, 000h, 016h
  123.             db 000h, 000h, 017h
  124.             db 000h, 000h, 018h
  125.             db 000h, 000h, 019h
  126.             db 000h, 000h, 01Ah
  127.             db 000h, 000h, 01Bh
  128.             db 000h, 000h, 01Ch
  129.             db 000h, 000h, 01Dh
  130.             db 000h, 000h, 01Eh
  131.             db 000h, 000h, 01Fh
  132.             db 000h, 000h, 020h
  133.             db 000h, 000h, 021h
  134.             db 000h, 000h, 022h
  135.             db 000h, 000h, 023h
  136.             db 000h, 000h, 024h
  137.             db 000h, 000h, 025h
  138.             db 000h, 000h, 026h
  139.             db 000h, 000h, 027h
  140.             db 000h, 000h, 028h
  141.             db 000h, 000h, 029h
  142.             db 000h, 000h, 02Ah
  143.             db 000h, 000h, 02Bh
  144.             db 000h, 000h, 02Ch
  145.             db 000h, 000h, 02Dh
  146.             db 000h, 000h, 02Eh
  147.             db 000h, 000h, 02Fh
  148.             db 000h, 000h, 030h
  149.             db 000h, 000h, 031h
  150.             db 000h, 000h, 032h
  151.             db 000h, 000h, 033h
  152.             db 000h, 000h, 034h
  153.             db 000h, 000h, 035h
  154.             db 000h, 000h, 036h
  155.             db 000h, 000h, 037h
  156.             db 000h, 000h, 038h
  157.             db 000h, 000h, 039h
  158.             db 000h, 000h, 03Ah
  159.             db 000h, 000h, 03Bh
  160.             db 000h, 000h, 03Ch
  161.             db 000h, 000h, 03Dh
  162.             db 000h, 000h, 03Eh
  163.             db 000h, 000h, 03Fh
  164.             db 001h, 001h, 03Fh
  165.             db 002h, 002h, 03Fh
  166.             db 003h, 003h, 03Fh
  167.             db 004h, 004h, 03Fh
  168.             db 005h, 005h, 03Fh
  169.             db 006h, 006h, 03Fh
  170.             db 007h, 007h, 03Fh
  171.             db 008h, 008h, 03Fh
  172.             db 009h, 009h, 03Fh
  173.             db 00Ah, 00Ah, 03Fh
  174.             db 00Bh, 00Bh, 03Fh
  175.             db 00Ch, 00Ch, 03Fh
  176.             db 00Dh, 00Dh, 03Fh
  177.             db 00Eh, 00Eh, 03Fh
  178.             db 00Fh, 00Fh, 03Fh
  179.             db 010h, 010h, 03Fh
  180.             db 011h, 011h, 03Fh
  181.             db 012h, 012h, 03Fh
  182.             db 013h, 013h, 03Fh
  183.             db 014h, 014h, 03Fh
  184.             db 015h, 015h, 03Fh
  185.             db 016h, 016h, 03Fh
  186.             db 017h, 017h, 03Fh
  187.             db 018h, 018h, 03Fh
  188.             db 019h, 019h, 03Fh
  189.             db 01Ah, 01Ah, 03Fh
  190.             db 01Bh, 01Bh, 03Fh
  191.             db 01Ch, 01Ch, 03Fh
  192.             db 01Dh, 01Dh, 03Fh
  193.             db 01Eh, 01Eh, 03Fh
  194.             db 01Fh, 01Fh, 03Fh
  195.             db 020h, 020h, 03Fh
  196.             db 020h, 021h, 03Fh
  197.             db 020h, 022h, 03Fh
  198.             db 020h, 023h, 03Fh
  199.             db 020h, 024h, 03Fh
  200.             db 020h, 025h, 03Fh
  201.             db 020h, 026h, 03Fh
  202.             db 020h, 027h, 03Fh
  203.             db 020h, 028h, 03Fh
  204.             db 020h, 029h, 03Fh
  205.             db 020h, 02Ah, 03Fh
  206.             db 020h, 02Bh, 03Fh
  207.             db 020h, 02Ch, 03Fh
  208.             db 020h, 02Dh, 03Fh
  209.             db 020h, 02Eh, 03Fh
  210.             db 020h, 02Fh, 03Fh
  211.             db 020h, 030h, 03Fh
  212.             db 020h, 031h, 03Fh
  213.             db 020h, 032h, 03Fh
  214.             db 020h, 033h, 03Fh
  215.             db 020h, 034h, 03Fh
  216.             db 020h, 035h, 03Fh
  217.             db 020h, 036h, 03Fh
  218.             db 020h, 037h, 03Fh
  219.             db 020h, 038h, 03Fh
  220.             db 020h, 039h, 03Fh
  221.             db 020h, 03Ah, 03Fh
  222.             db 020h, 03Bh, 03Fh
  223.             db 020h, 03Ch, 03Fh
  224.             db 020h, 03Dh, 03Fh
  225.             db 020h, 03Eh, 03Fh
  226.             db 020h, 03Eh, 03Fh
  227.             db 020h, 03Dh, 03Fh
  228.             db 020h, 03Ch, 03Fh
  229.             db 020h, 03Bh, 03Fh
  230.             db 020h, 03Ah, 03Fh
  231.             db 020h, 039h, 03Fh
  232.             db 020h, 038h, 03Fh
  233.             db 020h, 037h, 03Fh
  234.             db 020h, 036h, 03Fh
  235.             db 020h, 035h, 03Fh
  236.             db 020h, 034h, 03Fh
  237.             db 020h, 033h, 03Fh
  238.             db 020h, 032h, 03Fh
  239.             db 020h, 031h, 03Fh
  240.             db 020h, 030h, 03Fh
  241.             db 020h, 02Fh, 03Fh
  242.             db 020h, 02Eh, 03Fh
  243.             db 020h, 02Dh, 03Fh
  244.             db 020h, 02Ch, 03Fh
  245.             db 020h, 02Bh, 03Fh
  246.             db 020h, 02Ah, 03Fh
  247.             db 020h, 029h, 03Fh
  248.             db 020h, 028h, 03Fh
  249.             db 020h, 027h, 03Fh
  250.             db 020h, 026h, 03Fh
  251.             db 020h, 025h, 03Fh
  252.             db 020h, 024h, 03Fh
  253.             db 020h, 023h, 03Fh
  254.             db 020h, 022h, 03Fh
  255.             db 020h, 021h, 03Fh
  256.             db 020h, 020h, 03Dh
  257.             db 01fh, 01Fh, 03Fh
  258.             db 01eh, 01Eh, 03Fh
  259.             db 01dh, 01Dh, 03Fh
  260.             db 01ch, 01Ch, 03Fh
  261.             db 01bh, 01Bh, 03Fh
  262.             db 01ah, 01Ah, 03Fh
  263.             db 019h, 019h, 03Fh
  264.             db 018h, 018h, 03Fh
  265.             db 017h, 017h, 03Fh
  266.             db 016h, 016h, 03Fh
  267.             db 015h, 015h, 03Fh
  268.             db 014h, 014h, 03Fh
  269.             db 013h, 013h, 03Fh
  270.             db 012h, 012h, 03Fh
  271.             db 011h, 011h, 03Fh
  272.             db 010h, 010h, 03Fh
  273.             db 00fh, 00Fh, 03Fh
  274.             db 00eh, 00Eh, 03Fh
  275.             db 00dh, 00Dh, 03Fh
  276.             db 00ch, 00Ch, 03Fh
  277.             db 00bh, 00Bh, 03Fh
  278.             db 00ah, 00Ah, 03Fh
  279.             db 009h, 009h, 03Fh
  280.             db 008h, 008h, 03Fh
  281.             db 007h, 007h, 03Fh
  282.             db 006h, 006h, 03Fh
  283.             db 005h, 005h, 03Fh
  284.             db 004h, 004h, 03Fh
  285.             db 003h, 003h, 03Fh
  286.             db 002h, 002h, 03Fh
  287.             db 001h, 001h, 03Fh
  288.             db 000h, 000h, 03Fh
  289.             db 000h, 000h, 03Eh
  290.             db 000h, 000h, 03Dh
  291.             db 000h, 000h, 03Ch
  292.             db 000h, 000h, 03Bh
  293.             db 000h, 000h, 03Ah
  294.             db 000h, 000h, 039h
  295.             db 000h, 000h, 038h
  296.             db 001h, 000h, 037h
  297.             db 002h, 000h, 036h
  298.             db 003h, 000h, 035h
  299.             db 004h, 000h, 034h
  300.             db 005h, 000h, 033h
  301.             db 006h, 000h, 032h
  302.             db 007h, 000h, 031h
  303.             db 008h, 000h, 030h
  304.             db 009h, 000h, 02Fh
  305.             db 00ah, 000h, 02Eh
  306.             db 00bh, 000h, 02Dh
  307.             db 00ch, 000h, 02Ch
  308.             db 00dh, 000h, 02Bh
  309.             db 00eh, 000h, 02Ah
  310.             db 00fh, 000h, 029h
  311.             db 010h, 000h, 028h
  312.             db 011h, 000h, 027h
  313.             db 012h, 000h, 026h
  314.             db 013h, 000h, 025h
  315.             db 014h, 000h, 024h
  316.             db 015h, 000h, 023h
  317.             db 016h, 000h, 022h
  318.             db 017h, 000h, 021h
  319.             db 018h, 000h, 020h
  320.             db 019h, 000h, 01Fh
  321.             db 01ah, 000h, 01Eh
  322.             db 01bh, 000h, 01Dh
  323.             db 01ch, 000h, 01Ch
  324.             db 01dh, 000h, 01Bh
  325.             db 01eh, 000h, 01Ah
  326.             db 020h, 000h, 019h
  327.             db 021h, 000h, 018h
  328.             db 023h, 000h, 017h
  329.             db 024h, 000h, 016h
  330.             db 025h, 000h, 015h
  331.             db 026h, 000h, 014h
  332.             db 027h, 000h, 013h
  333.             db 028h, 000h, 012h
  334.             db 029h, 000h, 011h
  335.             db 02ah, 000h, 010h
  336.             db 02bh, 000h, 00Fh
  337.             db 02ch, 000h, 00Eh
  338.             db 02dh, 000h, 00Dh
  339.             db 02eh, 000h, 00Dh
  340.             db 02fh, 000h, 00Dh
  341.             db 030h, 000h, 00Dh
  342.             db 031h, 000h, 00Dh
  343.             db 032h, 000h, 00Dh
  344.             db 033h, 000h, 00Dh
  345.             db 034h, 000h, 00Dh
  346.             db 035h, 000h, 00Dh
  347.             db 036h, 000h, 00Dh
  348.             db 037h, 000h, 00Dh
  349.             db 038h, 000h, 00Dh
  350.             db 039h, 000h, 00Dh
  351.             db 03ah, 000h, 00Dh
  352.             db 03bh, 000h, 00Dh
  353.             db 03ch, 000h, 00Dh
  354.             db 03dh, 000h, 00Dh
  355.             db 03eh, 000h, 00Dh
  356. ────────────────────────────────────────────────────────────────────────────────
  357. main:        call    detectvesa
  358.         call    initvesa
  359.         call    setpalette
  360.         call    drawlines
  361.         mov    bp,15
  362.         call    switchwin
  363.         call    drawlines
  364.         mov    bp,30
  365.         call    switchwin
  366.         call    drawlines
  367.         mov    bp,45
  368.         call    switchwin
  369.         call    drawlines
  370.         mov    bp,60
  371.         call    switchwin
  372.         call    drawlines
  373.         mov    ah,1
  374.         int    21h
  375.         ret                ; ∙ code optimization rules
  376. ────────────────────────────────────────────────────────────────────────────────
  377. code        ends
  378. end        vesa